iT邦幫忙

2022 iThome 鐵人賽

DAY 13
1
AI & Data

先別急著學 Python | The Secret to Success in Python系列 第 13

Ɖ13-香料/ 大量 Excel 資料檔案合併

  • 分享至 

  • xImage
  •  

香料 Spices

辛香料的搭配是我很愛的一種料理方法,利用非常天然簡單的香料,點綴著原先澀澀略腥的料理,他不經過多的加工,早期甚至應用於藥材,帶給他一層神秘的面紗。「香料」這一個主題將會提及利用 Python 來達成更多 Excel 試算表中常見的功能,Combine 兩種不同的資料集, 應用更多不同格式的 Formate, 組建出不同結構 Struction, 或者是利用 Filter 方式來看透更多數據集,這些都是將原先沒有過多加工的食材,利用香料點綴出更豐富的氣息與味道,這會是一則很精彩與令人期待的章節。

Excel 常見文件解析

本文將介紹解析多個Excel文件、合併數據、清理數據和分析數據所需的基本流程,Python 和 Pandas 的結合對於整個操作而言是非常強大的,並且可以替代目前商業環境中經常使用的手動流程或令人痛苦的 VBA 腳本。切割、黏貼數據或編寫痛苦的VBA代碼很快就會過時,而且這個數度會越來越快。而 Python + pandas可以是未來一個很好的替代方案,它的可擴展性和功能更強。利用 Pandas 處理 Excel 文件可以為你的數據處理需求開發一個更加精簡和可重複的解決方案。

Excel 大量資料合併

在之前的章節中我們時常會利用 read_excel() 方式來抓取所需要的資料,但是當資料涵蓋整個資料夾,甚至上百個檔案時,我們面對不同檔案就顯得沒有解決方法,只能夠一個個處理。但是實際上,Python 有非常簡單的方式來協助解決這樣的狀況,我們可以使用 glob library 來搜尋大量資料名稱,以下我們嘗試在 data 中找到 sales 開頭的檔案,星號代表著是後面不管任何直都匹配:

import glob
glob.glob("data/sales*.xlsx")

我們假設資料夾中有以下檔案

  • data\sales-feb-2014.xlsx
  • data\sales-jan-2014.xlsx
  • data\sales-mar-2014.xlsx

這就提供了我們所需要的東西。讓我們導入我們的每個文件並將它們合併成一個文件。熊貓的 concat() 和 append()可以協助我們達成。在這個例子中我們使用append()。下面的代碼片段將初始化一個空白的DataFrame,然後將所有的單獨文件追加到 all_data DataFrame中,我們可以看見底下代碼成功合併三種不同的資料到 all_data 內。

all_data = pd.DataFrame()
for f in glob.glob("data/sales*.xlsx"):
    df = pd.read_excel(f)
    all_data = all_data.append(df,ignore_index=True)
    
all_data.head()

https://ithelp.ithome.com.tw/upload/images/20220927/20140740lAs7ucCQTm.png

資料詳細分析 data describe

希望你今天可以把「從9月份每一天的銷售業績統整並提出均值給我」,聽到這件任務你會怎麼執行呢?在 Excel 中要解決這個問題可能不太容易,尤其是當你資料集分開的時候,但是如果說你有學會上面的方法,你就可以利用 describe() 方式來做快速分析,進行合併後資料最方便的地方在於,我們可以這麼做:

all_data.describe()

https://ithelp.ithome.com.tw/upload/images/20220927/20140740EIeUqYZn5z.png

或者是更近一步了解資料型態,我認為漸漸了解其中方便與有趣之處,才是理解到學習 Python 真正的意義,所以請不要急著學 Python, 要知道你的需求與最適合的工具。

all_data.dtypes

https://ithelp.ithome.com.tw/upload/images/20220927/20140740CaojU2tBTw.png

謝謝大家的觀看,但歷史的痕跡會持續下去

今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。


Hi'Jerry均

Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。

謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。


上一篇
Ɖ12-榫卯/ 利用 Python 完成 Vlookup !超級好用的 FuzzyWuzzy
下一篇
Ɖ14-香料/ pd.merge 資料檔案合併分類計算
系列文
先別急著學 Python | The Secret to Success in Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言